package demo1;


//<Integer>
class MyArray <T>{
    //public Object[] objects = new Object[10];//这样写是最好的

    public  T[] objects =(T[])new Object[10];


    public T getPos (int pos) {
        return objects[pos];
    }

    public void setVal(int pos,T val) {
        objects[pos] = val;
    }
    public T[] getArray() {
        return objects;

    }
}
public class Test1 {
    public static void main(String[] args) {
        MyArray<Integer> myArray = new MyArray<>();
    }
    public static void main2(String[] args) {
        MyArray<Integer> myArray = new MyArray<Integer>();

        //myArray.setVal(0,"123");//因为我们指定传的是Integer，所以我们就不能够传字符串了

        myArray.setVal(0,10);
        myArray.setVal(1,50);
        //我们<Sting>此时我们就可以存放字符串了，<>里面存放的类型就表明我们指定该数组所存放的内容
        MyArray<String> myArray2 = new MyArray<>();//后面的<>里面的内容可以省略
        myArray2.setVal(3,"hello");
        myArray2.setVal(3,"bit");

        String ret = myArray2.getPos(3);
        System.out.println(ret);

    }
    public static void main1(String[] args) {
        //这里是一种错误的写法，泛型是在1.5引入的，但是为了兼容1.5之前的版本所以不会报错
        MyArray myArray = new MyArray();
        myArray.setVal(0,"123");
        myArray.setVal(1,10);

       /* int val = myArray.getPos(1);//我们通过getPos方法返回的是一个Object类型的数据，但是接收的是int类型来接收的，所以会报错
        //需要通过强制类型转化*/
        int val = (int)myArray.getPos(1);
        System.out.println(val);
    }

}
